#include "cpu/exec/template-start.h"
#define instr jmp

static void do_execute() {
    int len = 1 + DATA_BYTE;
    uint32_t fall_through = cpu.eip + len;
    int32_t offset = (DATA_BYTE == 1) ? (int8_t)op_src->val : (DATA_TYPE_S)op_src->val;
    uint32_t branch_target = fall_through + offset;

    cpu.eip = branch_target - len; 
    print_asm(str(instr) " %x", branch_target);
}

make_instr_helper(si)

#if DATA_BYTE == 4
make_helper(jmp_rm_l) {
    int len = decode_rm_l(eip + 1);
    cpu.eip = op_src->val - (len + 1);
    print_asm(str(instr) " *%s", op_src->str);
    return len + 1;
}
#endif

#include "cpu/exec/template-end.h"
